(Quick Reference)
cascade
Purpose
Configures the cascading behavior of an association.
Examples
class Author {
static hasMany = [books:Book]
static mapping = {
books cascade:'all-delete-orphan'
}
}Description
Usage:
association_name(cascade:string)Arguments:
cascade - The cascading behavior to define. Can be one or more (comma-separated) of all, merge, save-update, delete, lock, refresh, evict, replicate or all-delete-orphan (one-to-many associations only).
By default GORM configures a cascading policy of "all" in the case where one entity "belongs to" another. For example:
class Book {
static belongsTo = [author:Author]
}
class Author {
static hasMany = [books:Book]
}Here all persistence operations will cascade from the
Author domain to the
Book domain. So when a
Author is deleted so will all his books.
If the association doesn't define an owner (a "belong to" relationship):
class Book {
}
class Author {
static hasMany = [books:Book]
}Then GORM uses a cascading policy of "save-update" by default. So if an
Author is deleted the
Book domains associated with the
Author won't be deleted. If you wish to customize this behavior you can use the
cascade argument on an association:
class Author {
static hasMany = [books:Book]
static mapping = {
books cascade:'all-delete-orphan'
}
}Here a
Book will also be deleted if it is removed (orphaned) from the
books association.
See the section on
transitive persistence in the Hibernate user guide.